home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / chiptest.arc / CHIPTEST.BAS
BASIC Source File  |  1985-06-16  |  7KB  |  87 lines

  1. 5 DIM DAT(20):CLS:SCREEN 0:WIDTH 80:KEY OFF:SCR=1:FOR D=1 TO 11:READ DAT(D):NEXT:RESTORE:COLOR 7,0
  2. 6 LOCATE 12,25:PRINT"PRESS SPACEBAR FOR INSTRUCTIONS":LOCATE 13,26:PRINT"PRESS ANY OTHER KEY TO START":GOSUB 6000
  3. 10 X$=INKEY$:IF X$="" THEN 10
  4. 17 IF X$=" " THEN GOSUB 5000
  5. 20 IF ASC(X$)>47 AND ASC(X$)<58 THEN REGISTER=VAL(X$):OUT 980,REGISTER:FOR X=1 TO REGISTER:PLAY"L15 C":NEXT:REG=981
  6. 30 IF X$="," THEN 35 ELSE 40
  7. 35 DAT(REG-980+REGISTER)=DAT(REG-980+REGISTER)-1:IF DAT(REG-980+REGISTER)<0 THEN DAT(REG-980+REGISTER)=0:BEEP
  8. 36 OUT REG,DAT(REG-980+REGISTER)
  9. 40 IF X$="." THEN 45 ELSE 50
  10. 45 DAT(REG-980+REGISTER)=DAT(REG-980+REGISTER)+1:IF DAT(REG-980+REGISTER)>255 THEN DAT(REG-980+REGISTER)=255:BEEP
  11. 46 OUT REG,DAT(REG-980+REGISTER)
  12. 50 IF X$="M" OR X$="m" THEN REG=984:REGISTER=7
  13. 55 IF X$=CHR$(27) THEN GOSUB 200
  14. 60 IF X$="C" OR X$="c" THEN REG=985:REGISTER=7
  15. 65 IF X$="T" OR X$="t" THEN GOSUB 72
  16. 66 IF X$="Y" OR X$="y" THEN GOSUB 74
  17. 67 IF X$="U" OR X$="u" THEN GOSUB 76
  18. 70 GOTO 10
  19. 72 CLS:SCREEN 0:WIDTH 80:FOR X=1 TO 23:COLOR X,0:PRINT TAB(10);X;"HELLO";X:NEXT:SCR=1:GOSUB 4000:RETURN
  20. 74 SCREEN 1:FOR T=1 TO 3:CIRCLE (T*75,100),90,T:PAINT (T*75,100),T,T:NEXT:LOCATE 1,1:PRINT"HERE IS SOME TEXT. CAN YOU READ THIS.":SCR=2:GOSUB 4000:RETURN
  21. 76 SCREEN 2:CIRCLE (320,100),200:PAINT (320,100),1,1:LOCATE 1,20:PRINT" HERE IS SOME TEXT. CAN YOU READ THIS.":SCR=3:GOSUB 4000:RETURN
  22. 100 'USE NUMERIC KEYS TO SELECT 6845 REGISTERS
  23. 110 EXAMPLE: PRESS '4' TO SELECT REGISTER 4
  24. 120 '
  25. 130 PRESS 'A' FOR 984(MODE REGISTER), AND '`' FOR 985(COLOR REGISTER)
  26. 140 '
  27. 150 'GREATER THAN AND LESS THAN KEYS INCREMENT AND DECREMENT SELECTED REGISTERS,
  28. 160 'RESPECTIVELY. 'T' GIVES TEXT DISPLAY. 'Y' GIVES MED-RES. DISPLAY.
  29. 170 ''U' GIVES HI-RES. DISPLAY
  30. 200 A=1
  31. 201 CLS
  32. 210 X=1
  33. 220 X$=INKEY$:IF X$="" THEN 220
  34. 225 IF X$=CHR$(27) THEN RETURN
  35. 227 IF VAL(X$)>0 AND VAL(X$)<10 THEN A=VAL(X$)
  36. 230 LINE (X,0)-(X,100)
  37. 235 IF X>630 THEN RETURN
  38. 240 X=X+A:GOTO 220
  39. 250 RETURN
  40. 2000 DEF SEG=&HB800:FOR X=0 TO 65535!:POKE X,255:NEXT
  41. 3000 DATA &h71,&h50,&h5a,&h0a,&h1f,6,&h19,&h1c,2,7,&h29,0
  42. 3010 DATA &h38,&h28,&h2d,&h0a,&h7f,6,&h64,&h70,2,1,&h2a,48
  43. 3020 DATA &h38,&h28,&h2d,&h0a,&h7f,6,&h64,&h70,2,1,&h1e,15
  44. 4000 IF BY=1 THEN RETURN
  45. 4005 FOR L=1 TO SCR:FOR D=1 TO 12:READ DAT(D):NEXT:NEXT
  46. 4010 RESTORE:RETURN
  47. 5000 SCREEN 1:SCREEN 0:COLOR 7,0:CLS:WIDTH 80:PRINT"              6845      REGISTERS":PRINT
  48. 5010 PRINT"REGISTER    DESCRIPTION               UNITS                VALUE"
  49. 5020 PRINT"   0        Horizontal Total          Char.          ";USING "\\ \  \    ### \  \";HEX$(DAT(1));" HEX";DAT(1);" DEC"
  50. 5030 PRINT"   1        Horizontal Displayed      Char.          ";USING"\\ \  \    ### \  \";HEX$(DAT(2));" HEX";DAT(2);" DEC"
  51. 5040 PRINT"   2        Horiz. Sync. Position     Char.          ";USING"\\ \  \    ### \  \";HEX$(DAT(3));" HEX";DAT(3);" DEC"
  52. 5050 PRINT"   3        Horiz. Sync. Width        Char.          ";USING"\\ \  \    ### \  \";HEX$(DAT(4));" HEX";DAT(4);" DEC"
  53. 5060 PRINT"   4        Vertical Total            Char. Row      ";USING"\\ \  \    ### \  \";HEX$(DAT(5));" HEX";DAT(5);" DEC"
  54. 5070 PRINT"   5        Vertical Total Adjust     Scan Line      ";USING"\\ \  \    ### \  \";HEX$(DAT(6));" HEX";DAT(6);" DEC"
  55. 5080 PRINT"   6        Vertical Displayed        Char. Row      ";USING"\\ \  \    ### \  \";HEX$(DAT(7));" HEX";DAT(7);" DEC"
  56. 5090 PRINT"   7        Vert. Sync. Position      Char. Row      ";USING"\\ \  \    ### \  \";HEX$(DAT(8));" HEX";DAT(8);" DEC"
  57. 5100 PRINT"   8        Interlace Mode            - - - - -      ";USING"\\ \  \    ### \  \";HEX$(DAT(9));" HEX";DAT(9);" DEC"
  58. 5110 PRINT"   9        Max. Scan Line Addr.      Scan Line      ";USING"\\ \  \    ### \  \";HEX$(DAT(10));" HEX";DAT(10);" DEC"
  59. 5120 PRINT:PRINT:PRINT"       PORT  984,   MODE  REGISTER"
  60. 5130     PRINT"  CONTAINS:  "HEX$(DAT(11));" HEX     ";DAT(11);"DEC"
  61. 5140 PRINT:PRINT:PRINT"       PORT  985,   COLOR SELECT REGISTER"
  62. 5150     PRINT"  CONTAINS:  "HEX$(DAT(12));" HEX     ";DAT(12);"DEC"
  63. 5160 LOCATE 24,10:PRINT"PRESS ANY KEY TO CONTINUE";
  64. 5170 X$=INKEY$:IF X$="" THEN 5170
  65. 5190 BY=1:ON SCR GOSUB 72,74,76:BY=0:GOSUB 5200:RETURN
  66. 5200 FOR D=1 TO 10:OUT 980,D-1:OUT 981,DAT(D):NEXT:OUT 984,DAT(11):OUT 985,DAT(12):RETURN
  67. 6000 X$=INKEY$:IF X$="" THEN 6000
  68. 6010 IF X$<>" " THEN CLS:GOTO 10
  69. 6020 CLS:PRINT"THIS PROGRAM LETS YOU PLAY AROUND WITH THE VIDEO REGISTERS IN THE 6845 GRAPHICS CHIP ON THE STANDARD IBM COLOR GRAPHICS BOARD. THREE SAMPLE DISPLAYS ARE        PROVIDED TO SEE THE EFFECTS OF CHANGING VALUES AND ARE AS FOLLOWS:"
  70. 6030 PRINT:PRINT"PRESS  'T'  TO SEE A SAMPLE DISPLAY IN TEXT MODE"
  71. 6040 PRINT"PRESS  'Y'  TO SEE A SAMPLE DISPLAY IN MEDIUM RESOLUTION GRAPHICS."
  72. 6050 PRINT"PRESS  'U'  TO SEE A SAMPLE DISPLAY IN HIGH RESOLUTION GRAPHICS."
  73. 6060 PRINT:PRINT"TEN REGISTERS ARE AVAILABLE FOR BIT TWIDDLING. THESE REGISTERS ARE ACCESSED BY  PRESSING THE NUMBERS ON THE TOP ROW OF THE KEYBOARD. FOR EXAMPLE, PRESS'4' TO   SELECT REGISTER 4 FOR MODIFICATION."
  74. 6070 PRINT"THE REGISTERS ARE NUMBERED ZERO THROUGH NINE.THE COMPUTER WILL BEEP OUT THE     NUMBER OF THE REGISTER. AS IN THE ABOVE EXAMPLE, THE COMPUTER WOULD BEEP FOUR   TIMES."
  75. 6080 PRINT:PRINT"TO MODIFY THE REGISTER YOU HAVE SELECTED, USE THE  '<'  AND  '>'  KEYS. THE '>' KEY INCREMENTS THE VALUE PRESENTY IN THE REGISTER AND THE '<' KEY DECREMENTS    THE VALUE IN THE REGISTER."
  76. 6090 PRINT"THE COMPUTER WILL BEEP IF YOU TRY TO GO BELOW ZERO OR ABOVE 255."
  77. 6100 LOCATE 24,24:PRINT"Press any key to continue";
  78. 6110 X$=INKEY$:IF X$="" THEN 6110
  79. 6120 CLS:PRINT"TWO PORTS ON THE GRAPHICS CHIP ARE ALSO AVAILABLE. THESE ARE THE MODE REGISTER  AND THE COLOR SELECT REGISTER. THE TECHNICAL REFERENCE GUIDE WILL EXPLAIN THESE PORTS."
  80. 6130 PRINT:PRINT"TO SELECT THE MODE REGISTER FOR MODIFICATION, PRESS  'M'."
  81. 6140   PRINT"TO SELECT THE COLOR SELECT REGISTER FOR MODIFICATION, PRESS  'C'."
  82. 6150 PRINT:PRINT"AGAIN, THE '<' AND '>' KEYS CHANGE THE VALUE IN THE SELECTED REGISTER.          TO DISPLAY WHAT VALUES ARE CURRENTLY IN ALL ACCESSABLE REGISTERS,               PRESS THE SPACEBAR."
  83. 6155 PRINT"THIS IS USEFUL IN CASE YOU WANT TO WRITE DOWN THE VALUES TO USE IN CASE YOU     FIND ANY NEW PALETTES OR GRAPHICS TRICKS (HINT HINT).
  84. 6160 LOCATE 24,24:PRINT"Press any key to begin";
  85. 6170 X$=INKEY$:IF X$="" THEN 6170
  86. 6180 CLS:GOTO 10
  87. CS TRICKS (HINT HINT).